Software frequently requires testing in order to ensure that proper, desired, and complete functionality is being provided by the software. For example, it is common to test software during an installation or upgrade of the software, or when re-configuring, patching, or activating the software.
Automated software tests may be performed in order to test software in a fast, efficient, and cost-effective manner. For example, for software to be tested, known software inputs may be determined in conjunction with expected software outputs. Then, the known software inputs may be input into the software, and the actual software outputs may be compared against the expected software outputs, in order to test a correctness and stability of the software, and to identify potential malfunctioning aspects of the software.
However, in many cases, changes in the software to be tested, including the very changes which prompt the testing, may skew a result of the testing, because, e.g., the known software inputs may be partially or wholly invalid with respect to the thus-changed software. For example, if the tested software includes a graphical user interface (GUI) that has been updated to include a new field, but the known software inputs do not reflect the presence of such a new field, then the actual software outputs may include an error message which is not a part of the expected software outputs. Consequently, a software test engineer may erroneously believe that the tested software is malfunctioning. Moreover, even if the software engineer recognizes that the error lies in the testing configuration, e.g., of the software inputs, it may be difficult for the software engineer to correct the testing configuration.